# -*- coding: utf-8 -*-

"""剑指 Offer II 032. 有效的变位词
给定两个字符串 s 和 t ，编写一个函数来判断它们是不是一组变位词（字母异位词）。
注意：若 s 和 t 中每个字符出现的次数都相同且字符顺序不完全相同，则称 s 和 t 互为变位词（字母异位词）。

示例 1:
输入: s = "anagram", t = "nagaram"
输出: true

示例 2:
输入: s = "rat", t = "car"
输出: false

示例 3:
输入: s = "a", t = "a"
输出: false

提示:
1 <= s.length, t.length <= 5 * 10^4
s and t 仅包含小写字母

进阶: 如果输入字符串包含 unicode 字符怎么办？你能否调整你的解法来应对这种情况？"""

class Solution:
    """从进阶提示中，发现仅包含小写字母的更好方案，为 s，t 分别维护一个数组，各自用桶排序存储每个小写字母出现的次数。
    如果要用到 unicode 字符，就应该用哈希表"""
    def isAnagram(self, s: str, t: str) -> bool:
        if s == t or len(s) != len(t):
            return False
        
        arrs, arrt = [0 for _ in range(0, 26)], [0 for _ in range(0, 26)]
        for i in s:
            arrs[ord(i)-97] += 1
        for j in t:
            arrt[ord(j)-97] += 1
        return arrs == arrt

if __name__ == '__main__':
    so = Solution()
    print(so.isAnagram(s="anagram", t="nagaram"))
    print(so.isAnagram(s="rat", t="car"))
    print(so.isAnagram(s="a", t="a"))
